package util

import (
	"math/rand"
	"time"
)

// arrayExtract 函数用于从二维数组中提取指定索引的元素，组成一个新的切片返回
func ArrayExtract(arrData [][]interface{}, keyIndex int) []interface{} {
	// 初始化一个空的切片用于存储提取的元素
	var arrRet []interface{}
	// 遍历二维数组
	for _, arrRow := range arrData {
		// 检查 keyIndex 是否在当前行的有效范围内
		if keyIndex < len(arrRow) {
			// 将当前行指定索引的元素添加到结果切片中
			arrRet = append(arrRet, arrRow[keyIndex])
		}
	}
	return arrRet
}
func GetRandomInt(min, max int) int32 {
	// 设置随机数种子
	rand.Seed(time.Now().UnixNano())
	// 计算随机数范围
	randNum := rand.Intn(max-min+1) + min
	return int32(randNum)
}

// arrayIndex 函数用于将数组按照指定的键进行索引
func ArrayIndex(arrData []map[string]interface{}, keyIndex string) map[string]map[string]interface{} {
	indexedData := make(map[string]map[string]interface{})
	for _, item := range arrData {
		if val, ok := item[keyIndex]; ok {
			if keyStr, ok := val.(string); ok {
				indexedData[keyStr] = item
			}
		}
	}
	return indexedData
}

// getArrUser 函数用于根据用户 ID 数组和字段数组获取用户信息

// contains 函数用于判断一个字符串是否在字符串数组中
func contains(arr []string, str string) bool {
	for _, s := range arr {
		if s == str {
			return true
		}
	}
	return false
}

// intersect 函数用于求两个字符串数组的交集
func intersect(arr1, arr2 []string) []string {
	intersection := make([]string, 0)
	for _, s1 := range arr1 {
		for _, s2 := range arr2 {
			if s1 == s2 {
				intersection = append(intersection, s1)
				break
			}
		}
	}
	return intersection
}

// indexOf 函数用于查找一个字符串在字符串数组中的索引
func indexOf(arr []string, str string) int {
	for i, s := range arr {
		if s == str {
			return i
		}
	}
	return -1
}
